package com.ajavaer.framework.im.tencent.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;

import java.util.List;

/**
 * 消息元素 TIMMsgElement
 * <p>
 * 图像消息元素<br/>
 * 不能通过服务端集成的 Rest API 接口发送图像消息，发送图像消息需要通过客户端集成相应的接口。
 * </p>
 */
@JsonTypeName(value = "TIMImageElem")
public class TencentMsgImageElem implements TencentMsgContent {
    /**
     * 图片序列号。后台用于索引图片的键值。
     */
    @JsonProperty("UUID")
    private String uuid;
    /**
     * 图片格式。JPG = 1，GIF = 2，PNG = 3，BMP = 4，其他 = 255。
     * <br/>
     * 参考{@link TencentImImageFormat}
     */
    @JsonProperty("ImageFormat")
    private Integer imageFormat;
    /**
     * 原图、缩略图或者大图下载信息。
     */
    @JsonProperty("ImageInfoArray")
    private List<ImageInfo> imageInfoArray;


    public TencentMsgImageElem() {
    }

    public TencentMsgImageElem(String uuid, Integer imageFormat, List<ImageInfo> imageInfoArray) {
        this.uuid = uuid;
        this.imageFormat = imageFormat;
        this.imageInfoArray = imageInfoArray;
    }

    public static TencentMsgImageElem of(String uuid, Integer imageFormat, List<ImageInfo> imageInfoArray) {
        return new TencentMsgImageElem(uuid, imageFormat, imageInfoArray);
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public Integer getImageFormat() {
        return imageFormat;
    }

    public void setImageFormat(Integer imageFormat) {
        this.imageFormat = imageFormat;
    }

    public List<ImageInfo> getImageInfoArray() {
        return imageInfoArray;
    }

    public void setImageInfoArray(List<ImageInfo> imageInfoArray) {
        this.imageInfoArray = imageInfoArray;
    }

    private class ImageInfo {
        /**
         * 图片类型： 1-原图，2-大图，3-缩略图。
         */
        @JsonProperty("Type")
        private Integer type;
        /**
         * 图片数据大小，单位：字节。
         */
        @JsonProperty("Size")
        private Long size;
        /**
         * 图片宽度。
         */
        @JsonProperty("Width")
        private Integer width;
        /**
         * 图片高度。
         */
        @JsonProperty("Height")
        private Integer height;
        /**
         * 图片下载地址。
         */
        @JsonProperty("URL")
        private String url;

        public Integer getType() {
            return type;
        }

        public void setType(Integer type) {
            this.type = type;
        }

        public Long getSize() {
            return size;
        }

        public void setSize(Long size) {
            this.size = size;
        }

        public Integer getWidth() {
            return width;
        }

        public void setWidth(Integer width) {
            this.width = width;
        }

        public Integer getHeight() {
            return height;
        }

        public void setHeight(Integer height) {
            this.height = height;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }
    }
}
